﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace mrp16062010.Veri
{
    class RotaOperasyon:ConnectionImporter
    {
        private int rotaOperasyonId;

        public int RotaOperasyonId
        {
            get { return rotaOperasyonId; }
            set { rotaOperasyonId = value; }
        }

        private OperasyonTanim operasyonTanim;

        public OperasyonTanim OperasyonTanim
        {
            get { return operasyonTanim; }
            set { operasyonTanim = value; }
        }

        private TimeSpan hazirlikSuresi;

        public TimeSpan HazirlikSuresi
        {
            get { return hazirlikSuresi; }
            set { hazirlikSuresi = value; }
        }

        private TimeSpan operasyonSuresi;

        public TimeSpan OperasyonSuresi
        {
            get { return operasyonSuresi; }
            set { operasyonSuresi = value; }
        }

        private IsMerkezi isMerkezi;

        public IsMerkezi IsMerkezi
        {
            get { return isMerkezi; }
            set { isMerkezi = value; }
        }

        private int sira;

        public int Sira
        {
            get { return sira; }
            set { sira = value; }
        }


        public void Kaydet()
        {
            Connect();
            SqlCommand cmd = new SqlCommand("InsertRotaOperasyon", Connection);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmReturnValue = cmd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int);
            prmReturnValue.Direction = ParameterDirection.ReturnValue;

            #region Populate Paramete

            SqlParameter prmOperasyonTanimId = cmd.Parameters.Add("@OperasyonTanimId", SqlDbType.Int);
            prmOperasyonTanimId.Direction = ParameterDirection.Input;

            prmOperasyonTanimId.Value = this.RotaOperasyonId;


            SqlParameter prmHazirlikSuresi = cmd.Parameters.Add("@HazirlikSuresi", SqlDbType.Decimal);
            prmHazirlikSuresi.Direction = ParameterDirection.Input;
            prmHazirlikSuresi.Precision = 18;
            prmHazirlikSuresi.Scale = 0;

            prmHazirlikSuresi.Value = this.HazirlikSuresi.Ticks;


            SqlParameter prmOperasyonSuresi = cmd.Parameters.Add("@OperasyonSuresi", SqlDbType.Decimal);
            prmOperasyonSuresi.Direction = ParameterDirection.Input;
            prmOperasyonSuresi.Precision = 18;
            prmOperasyonSuresi.Scale = 0;

            prmOperasyonSuresi.Value = this.OperasyonSuresi.Ticks;


            SqlParameter prmIsMerkeziId = cmd.Parameters.Add("@IsMerkeziId", SqlDbType.Int);
            prmIsMerkeziId.Direction = ParameterDirection.Input;

            prmIsMerkeziId.Value = this.IsMerkezi.IsMerkeziId;


            SqlParameter prmSira = cmd.Parameters.Add("@Sira", SqlDbType.Int);
            prmSira.Direction = ParameterDirection.Input;

            prmSira.Value = this.Sira;


            SqlParameter prmRotaOperasyonId = cmd.Parameters.Add("@RotaOperasyonId", SqlDbType.Int);


            prmRotaOperasyonId.Direction = ParameterDirection.Output;

            #endregion


            cmd.ExecuteNonQuery();
            this.RotaOperasyonId = int.Parse(prmRotaOperasyonId.Value.ToString());
            cmd.Dispose();
            Disconnect();
        }

        public void Sil()
        {
            Connect();
            SqlCommand cmd = new SqlCommand("DeleteRotaOperasyon", Connection);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmRotaOperasyonId = cmd.Parameters.Add("@RotaOperasyonId", SqlDbType.Int);
            prmRotaOperasyonId.Direction = ParameterDirection.Input;
            prmRotaOperasyonId.Value = this.RotaOperasyonId;
            cmd.ExecuteNonQuery();
            cmd.Dispose();
            Disconnect();
        }

        public void Guncelle()
        {
            Connect();
            SqlCommand cmd = new SqlCommand("UpdateRotaOperasyon", Connection);
            cmd.CommandType = CommandType.StoredProcedure;

            SqlParameter prmRotaOperasyonId = cmd.Parameters.Add("@RotaOperasyonId", SqlDbType.Int);
            prmRotaOperasyonId.Direction = ParameterDirection.Input;
            prmRotaOperasyonId.Value = this.RotaOperasyonId;


            SqlParameter prmOperasyonTanimId = cmd.Parameters.Add("@OperasyonTanimId", SqlDbType.Int);
            prmOperasyonTanimId.Direction = ParameterDirection.Input;

            prmOperasyonTanimId.Value = this.OperasyonTanim.OperasyonTanimId;


            SqlParameter prmHazirlikSuresi = cmd.Parameters.Add("@HazirlikSuresi", SqlDbType.Decimal);
            prmHazirlikSuresi.Direction = ParameterDirection.Input;
            prmHazirlikSuresi.Precision = 18;
            prmHazirlikSuresi.Scale = 0;

            prmHazirlikSuresi.Value = this.HazirlikSuresi;


            SqlParameter prmOperasyonSuresi = cmd.Parameters.Add("@OperasyonSuresi", SqlDbType.Decimal);
            prmOperasyonSuresi.Direction = ParameterDirection.Input;
            prmOperasyonSuresi.Precision = 18;
            prmOperasyonSuresi.Scale = 0;

            prmOperasyonSuresi.Value = this.OperasyonSuresi;


            SqlParameter prmIsMerkeziId = cmd.Parameters.Add("@IsMerkeziId", SqlDbType.Int);
            prmIsMerkeziId.Direction = ParameterDirection.Input;

            prmIsMerkeziId.Value = this.IsMerkezi.IsMerkeziId;


            SqlParameter prmSira = cmd.Parameters.Add("@Sira", SqlDbType.Int);
            prmSira.Direction = ParameterDirection.Input;

            prmSira.Value = this.Sira;


            cmd.ExecuteNonQuery();
            cmd.Dispose();
            Disconnect();
        }

        public void Bul()
        {
            Connect();
            SqlCommand cmd = new SqlCommand("SelectRotaOperasyon", Connection);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmRotaOperasyonId = cmd.Parameters.Add("@RotaOperasyonId", SqlDbType.Int);
            prmRotaOperasyonId.Direction = ParameterDirection.Input;
            prmRotaOperasyonId.Value = this.RotaOperasyonId;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);

            foreach (DataRow row in dt.Rows)
            {
                this.OperasyonTanim.OperasyonTanimId = int.Parse(row["OperasyonTanimId"].ToString());
                this.hazirlikSuresi = TimeSpan.FromTicks(long.Parse(row["HazirlikSuresi"].ToString()));
                this.operasyonSuresi = TimeSpan.FromTicks(long.Parse(row["OperasyonSuresi"].ToString()));
                this.isMerkezi.IsMerkeziId = int.Parse(row["IsMerkeziId"].ToString());
                this.sira= int.Parse(row["Sira"].ToString());
                break;
            }

            cmd.Dispose();
            Disconnect();
        }

        public List<RotaOperasyon> Listele()
        {
            Connect();
            SqlCommand cmd = new SqlCommand("SelectRotaOperasyonsAll", Connection);
            cmd.CommandType = CommandType.StoredProcedure;

            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            List<RotaOperasyon> liste = new List<RotaOperasyon>();
            foreach (DataRow row in dt.Rows)
            {
                RotaOperasyon yeniRotaOperasyon = new RotaOperasyon();
                yeniRotaOperasyon.OperasyonTanim.OperasyonTanimId = int.Parse(row["OperasyonTanimId"].ToString());
                yeniRotaOperasyon.hazirlikSuresi = TimeSpan.FromTicks(long.Parse(row["HazirlikSuresi"].ToString()));
                yeniRotaOperasyon.operasyonSuresi = TimeSpan.FromTicks(long.Parse(row["OperasyonSuresi"].ToString()));
                yeniRotaOperasyon.isMerkezi.IsMerkeziId = int.Parse(row["IsMerkeziId"].ToString());
                yeniRotaOperasyon.sira = int.Parse(row["Sira"].ToString());
                liste.Add(yeniRotaOperasyon);
            }

            cmd.Dispose();
            Disconnect();
            return liste;
        }
    }
}
